Correcting errors in copied text

ABSTRACT

A non-transitory computer-readable storage medium may include instructions stored thereon for propagating changes to copied text. When executed by at least one processor, the instructions may be configured to cause a computing system to at least present copied text within a user interface of the computing system, monitor the user interface for changes to the copied text, receive a change to the copied text, the change including replacing a first instance of a first word, within the copied text, with a first instance of a second word, and in response to receiving the change to the copied text, present a prompt to replace, within the copied text, a second instance of the first word with a second instance of the second word.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a divisional of U.S. application Ser. No.16/797,914, filed Feb. 21, 2020, which is a divisional of U.S.application Ser. No. 16/135,591, filed Sep. 19, 2018, which is adivisional of Ser. No. 14/882,786, filed Oct. 14, 2015, the disclosuresof which are incorporated herein by reference.

TECHNICAL FIELD

This description relates to correcting errors in text.

BACKGROUND

Computers may enable users to easily copy text, saving the user time bynot requiring him or her to re-type the same text. Some parts of thetext, such as the addressee, may change. A user may make one or morechanges to the copied text, but forget to make corresponding changesthroughout the copied text.

SUMMARY

Changes to copied text may be propagated to other parts of the copiedtext, such as by changing a name throughout the text after a name waschanged, prompting a same change to be made after a change has been madeto multiple instances of copied text, and/or changing an address basedon a changed name to correspond to the changed name.

According to an example implementation, a non-transitorycomputer-readable storage medium may include instructions stored thereonfor propagating changes to copied text. When executed by at least oneprocessor, the instructions may be configured to cause a computingsystem to at least present copied text within a user interface of thecomputing system, monitor the user interface for changes to the copiedtext, receive a change to the copied text, the change includingreplacing a first instance of a first word, within the copied text, witha first instance of a second word, and in response to receiving thechange to the copied text, present a prompt to replace, within thecopied text, a second instance of the first word with a second instanceof the second word.

A non-transitory computer-readable storage medium may includeinstructions stored thereon for propagating changes to copied text. Whenexecuted by at least one processor, the instructions may be configuredto cause a computing system to at least monitor changes to multipleinstances of copied text, determine that a same change has been made tothe copied text at least a threshold number of times, the thresholdnumber being greater than one, and prompt the same change to be made toa subsequent instance of the copied text based on the determination thatthe same change has been made to the copied text at least the thresholdnumber of times.

A non-transitory computer-readable storage medium may includeinstructions stored thereon for correcting errors in copied text. Whenexecuted by at least one processor, the instructions may be configuredto cause a computing system to at least receive copied text, the copiedtext including a first name and a first address, the first addressimmediately following the first name, receive a replacement of the firstname with a second name, determine that the second name does notcorrespond to the first address, based on determining that the secondname does not correspond to the first address, determine a secondaddress corresponding to the second name, and present a prompt toreplace the first address with the determined second address.

A non-transitory computer-readable storage medium may includeinstructions stored thereon for correcting errors in copied text. Whenexecuted by at least one processor, the instructions may be configuredto cause a computing system to at least receive, within an emailinterface presented by the computing system, an identification of arecipient, and copied text, determine a name associated with therecipient, determine that a name of a person in the copied text isdifferent than the name associated with the recipient, and present aprompt to change the name of the person in the copied text to the nameassociated with the recipient.

The details of one or more implementations are set forth in theaccompanying drawings and the description below. Other features will beapparent from the description and drawings, and from the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram of a computing system for correcting errors incopied text according to an example implementation.

FIG. 2A shows a user interface (UI) with copied text according to anexample implementation.

FIG. 2B shows the UI with a first instance of a first word in the copiedtext replaced according to an example implementation.

FIG. 2C shows the UI with a prompt to replace a second instance of thefirst word in the copied text according to an example implementation.

FIG. 2D shows the UI with copied text according to another exampleimplementation.

FIG. 2E shows the UI with a first instance of a first string in thecopied text replaced according to an example implementation.

FIG. 2F shows the UI with a prompt to replace a second instance of thefirst string in the copied text according to an example implementation.

FIG. 3A shows the UI with copied text according to another exampleimplementation.

FIG. 3B shows the UI with a proper name replaced with another propername of the opposite gender according to an example implementation.

FIG. 3C shows the UI with a prompt to replace a pronoun with anotherpronoun of the opposite gender according to an example implementation.

FIG. 4A shows the UI with copied text according to another exampleimplementation.

FIG. 4B shows the UI with a change made to the copied text according toan example implementation.

FIG. 4C shows the UI with the same change made to the copied text as inthe example shown in FIG. 4B according to an example implementation.

FIG. 4D shows the UI with a prompt to make the same change to the copiedtext as in the examples shown in FIGS. 4B and 4C.

FIG. 5A shows the UI with copied text according to an exampleimplementation.

FIG. 5B shows the UI with the copied text and a prompt to change anaddress after a name has been changed according to an exampleimplementation.

FIG. 6A shows an email interface with a recipient and copied textaccording to an example implementation.

FIG. 6B shows the email interface with a different recipient than theexample of FIG. 6A, and a prompt to change the copied text based on thedifferent recipient according to an example implementation.

FIG. 7 is a flowchart of a method for propagating changes to copied textaccording to an example implementation.

FIG. 8 is a flowchart of a method for propagating changes to copied textaccording to another example implementation.

FIG. 9 is a flowchart of a method for correcting errors in copied textaccording to an example implementation.

FIG. 10 is a flowchart of a method for correcting errors in copied textaccording to another example implementation.

FIG. 11 shows an example of a computer device and a mobile computerdevice that can be used to implement the techniques described here.

DETAILED DESCRIPTION

When users copy text, such as to send letters or emails with the samecontent to multiple recipients, they may change one part of the text,such as the addressee, but forget to change other parts of the text thatshould also be changed. These mistakes may be corrected by prompting theuser to make a same change to a subsequent instance of the same word orsequence of successive characters, which may be a proper noun and/orname, prompt changes to gendered pronouns based on the gender of thename changing, prompt changes to text based on a same change to the textbeing made multiple times, prompt a change of an address to correspondto a change of a name of an addressee, and/or prompt a change of a namebased on a name of a recipient of an email.

FIG. 1 is a diagram of a computing system 100 for correcting errors incopied text according to an example implementation. The computing system100 may include a single computing device that performs all thefunctions described herein, a combination of a client and a server in anexample in which the client communicates with the server via a networksuch as the Internet and the user types text into a browser, or multiplecomputing devices in an example in which the functions described hereinare distributed among multiple computing devices.

The computing system 100 may include a user interface (UI) generator102. The UI generator 102 may generate a UI to present information, suchas text, to a user, and receive input, such as instructions to inserttext, delete text, copy text, and/or accept proposed changes orreplacements, from the user. The UI may include a word processingapplication and/or an email application, either or both of which may beincluded in a local application running on a client computing device ora browser application communicating with a server computing device viathe Internet. The computing system 100 may present the UI within adisplay, which may be an output component of an input/output module 144.

The computing system 100 may include a copier 104. The copier 104 maycopy text into the UI, and/or cause the UI to present the copied text,in response to user input to copy the text within the UI. Copying textmay include copying (ctrl-C) and pasting (ctrl-V) text into the UI inresponse to the user input and/or in response to the user instruction tocopy the text.

The computing system 100 may include a change monitor 106. The changemonitor 106 may monitor the user interface for changes to copied text,such as by monitoring changes to the text in the UI, which changes mayinclude deletions of text, insertions of text, and/or replacements oftext. The change monitor 106 may constantly monitor changes to the textin the UI, such as by storing all changes to the text in a changesdatabase 124 and/or messaging a prompter 108 in response to each changeto the text.

Changes to the text monitored by the change monitor 106 may includereplacing a first instance of a first word with a first instance of asecond word (such as by deleting the first instance of the first wordand inserting the first instance of the second word at the location fromwhich the first word was deleted), replacing a first string ofsuccessive characters (which may include one or multiple words) with asecond string of successive characters (which may include one ormultiple words), monitoring changes to multiple instances of copied textsuch as monitoring deletions and/or removals of text within the multipleinstances of the copied text, and/or monitoring a replacement of a firstname with a second name.

The computing system 100 may include the prompter 108. The prompter 108may present a prompt for the user to make changes to the copied text,such as replacements of words and/or strings of characters to correspondto previous changes. The prompter 108 may, for example, prompt the userto replace a second instance of a first word with a second instance of asecond word based on the change monitor 106 determining that the firstinstance of the first word was changed to a first instance of the secondword. The prompter 108 may prompt the user to replace a first genderedpronoun with a second gendered pronoun of the opposite gender based onthe change monitor 106 determining that a first name was changed to asecond name and a name determiner 114 determining that the second nameis associated with an opposite gender than the first name. The prompter108 may prompt the user to change a portion and/or instance of copiedtext based on the change monitor 106 determining that the same changehas been made to the copied text at least a threshold number of times.The prompter 108 may prompt the user to change an address based on thechange monitor 106 determining that a name has been changed and theaddress does not correspond to the changed name. The prompter 108 mayprompt the user to change a name of a person in copied text of an emailbased on a name of a recipient of the email being different than thename in the copied text. The prompter 108 may prompt changes to copiedtext by causing the text, which is to be deleted and/or replaced, to behighlighted. The prompter 108 may prompt changes to copied text bydisplaying text, which is to replace the deleted text, and/or may promptchanges to insert in the location from which the text was deleted. Theprompter 108 may prompt changes to copied text by presenting a buttonfor the user to click on to accept the proposed change.

The computing system 100 may also include a searcher 110. The searcher110 may search for and/or find text, words, and/or a sequence ofcharacters to change, delete, and/or replace, based on the change to thecopied text monitored and/or determined by the change monitor 106. Thesearcher 110 may search for a second instance (or multiple subsequentinstances) of a first word and/or string of successive characters basedon a deletion, change, and/or replacement of the first instance of thefirst word and/or string of successive characters and/or based on thesame change being made to multiple instances of copied text. Thesearcher 110 may search for a gendered pronoun based on a deletion,change, and/or replacement of a proper noun, and the gendered pronounsearched for may have the same gender as the deleted and/or replacedproper noun. The searcher 110 may search for an address immediatelyfollowing a name based on a deletion, change, and/or replacement of thename, so that the address may be replaced with an address correspondingto the name that replaces the deleted and/or replaced name. The searcher110 may search for a name within an email, such as a name on a firstline of copied text and/or a name immediately following a salutation inthe copied text, so that the computing system 100 can determine whetherthe name within the email is the same as a name associated with arecipient of the email.

The computing system 100 may include a noun determiner 112. The noundeterminer 112 may determine whether a word and/or string of successivecharacters, to which the change monitor 106 determined that a change wasmade, is a noun and/or proper noun. If the word and/or string ofsuccessive characters that was changed is a noun, then the prompter 108may prompt a change to a second and/or subsequent instance of the wordand/or string of successive characters. If the noun determiner 112determines that the word and/or string of successive characters that waschanged is a proper noun, and the gender of the proper noun was changed,then the prompter 108 may prompt a change to one or more genderedpronouns within the copied text. If the noun determiner 112 determinesthat the word and/or string of successive characters that was changed isnot a noun, and/or is a verb, adjective, or adverb, then the prompter108 may not prompt any further changes to the copied text.

The computing system 100 may include a name determiner 114. The namedeterminer 114 may determine whether a word and/or string of successivecharacters, to which the change monitor 106 determined that a change wasmade, is a name. If the name determiner 114 determines that the wordand/or string of successive characters that was changed is a name, thenthe searcher 110 may search for an address immediately following thename, and if the address immediately following the name does notcorrespond to an address associated with the name that was insertedand/or that replaced the previous name, the prompter 108 may prompt achange to the address immediately following the name.

The computing system 100 may include a location determiner 116. Thelocation determiner 116 may determine whether a name in copied text,such as text copied into an email, is included in a first line of thecopied text and/or immediately follows a salutation. A salutation may bea term and/or word commonly used to begin a letter and/or email, and/orwhich is typically followed by a name, such as, “To,” “Dear,” “Hello,”and/or “Hi.” If the name in the first line of the copied text and/orfollowing the salutation does not correspond to a name associated with arecipient of an email, then the prompter 108 may prompt the name to bechanged to and/or replaced with the name associated with the recipientof the email.

The computing system 100 may include an address determiner 118. Theaddress determiner 118 may determine an address associated with a name.The address determiner 118 may determine the address associated with thename by consulting a database included in the computer system 100,and/or by performing an Internet search on the name.

The computing system 100 may include at least one memory device 120. Thememory device 120 may include a non-transitory computer-readable storagemedium. The memory device 120 may include instructions 122 storedthereon. The instructions 122, when executed by at least one processor142, may be configured to cause the computing system 100 to perform anycombination of the functions, methods, and/or processes describedherein.

The computing system 100 may include a changes database 124 in thememory device 120. The changes database 124 may store changes made tocopied text, such as changes monitored by the change monitor 106, and/orinformation related to the changes stored for the purpose of determiningwhether to prompt a subsequent change to the copied text. The changesdatabase 124 may include removed text 126, which may include removedand/or deleted words, strings of successive characters, and/or thelocations of the removed and/or deleted strings of successivecharacters. The changes database 124 may include added text 128, whichmay include added and/or inserted words, strings of successivecharacters, and/or the locations of the added and/or inserted strings ofsuccessive characters. The changes database 124 may also includeassociations between the removed text 126 and the added text 128.

The changes database 124 may include a change counter 130. The changecounter 130 may maintain a count of a number of times that a same changeis made to copied text, such as a number of times that a same wordand/or string of successive characters is removed and/or deleted fromthe copied text. The change monitor 106 may increment the change counter130 each time the same change is made to the copied text. The changecounter 130 may maintain a separate count for each change (such as eachdeleted and/or removed word and/or string of successive characters,and/or each copied text). The changes database 124 may also include achange threshold 132. The change threshold 132, which may be at leasttwo, may be a number of times, after which a same change to multipleprevious instances of copied text is made, the prompter 108 will promptthe same change to subsequent instances of copied text.

The memory 120 may include copied text 134. The copied text 134 mayinclude previous instances 136 of copied text, and the changes made tothe previous instances, and a current instance 138 of the copied text.The current instance 138 of the copied text may be displayed in the UI.

The memory 120 may also include other data 140. The data 140 may includedata used by other applications executed by the computing system 100,and/or data used by the computing system 100 to propagate changes and/orcorrect errors in copied text, not described above.

The computing system 100 may also include at least one processor 142.The at least one processor 142 may be capable of executing instructions,such as the instructions 122, to cause the computing system 100 toperform any combination of the functions, methods, and/or processesdescribed herein.

The computing system 100 may also include an input/output module 144.The input/output module 144 may include one or more input interfaces andone or more output interfaces. The input interfaces and outputinterfaces may include wired or wireless nodes for communicating withother computing systems, such as servers. The input interface(s) mayinclude a keyboard, mouse, touchscreen, and/or microphone, asnon-limiting examples. The output interface(s) may include a displayand/or speaker, as non-limiting examples.

FIG. 2A shows a user interface (UI) 200 with copied text 202 accordingto an example implementation. The UI generator 102 may have generatedthe UI 200, and the computing system 100 may present the UI 200 within adisplay, which may be included in the input/output modules 144. Thecopier 104 may have copied the copied text 202 from another application,or from a previous document in the same application. The UI 200 may bedisplayed as part of an application such as a word processingapplication or an email application.

FIG. 2B shows the UI 200 with a first instance of a first word 204 inthe copied text 202 replaced according to an example implementation. Inthis example, the first word 204, “Joe,” may be a name of an addresseeof the copied text 202. The first word 204 may be removed and/ordeleted, and replaced by inserting a second word 206, “Robert,” into thelocation in the copied text 202 from which the first word 204 wasremoved and/or deleted. The change monitor 106 may monitor the deletionof “Joe” and the insertion of “Robert,” and pass the deletion andinsertion to the noun determiner 112. The noun determiner 112 maydetermine that “Joe” and/or “Robert” are nouns. The noun determiner 112may, based on determining that the first instance of the first word 204“Joe” and/or the first instance of the second word 206 “Robert” arenouns, prompt the prompter 108 to determine whether to replace a secondinstance of the first word 208 “Joe” with a second instance of the firstword “Robert.”

The copied text 202 may include the second instance of the first word208, “Joe.” After the replacement of the first instance of the firstword 204, “Joe,” with the first instance of the second word 206,“Robert,” the second instance of the first word 208, “Joe,” may beinconsistent and/or erroneous. The searcher 110 may find the secondinstance of the first word 208 based on the replacement of the firstinstance of the first word 204 with the first instance of the secondword 206 and the determination that the first instance of the first word204 “Joe” and/or the first instance of the second word 206 “Robert” arenouns.

FIG. 2C shows the UI 200 with a prompt 210 to replace the secondinstance of the first word 208 in the copied text 202 according to anexample implementation. In the example shown in FIG. 2C, the prompter108 may highlight the second instance of the first word 208, “Joe,” toshow the user which word is to be replaced (the highlighting is shown inFIG. 2C as a box around the first word 208). The prompter 108 may alsogenerate a prompt 210, which may include text inquiring whether the userwishes to replace the second instance of the first word 208, “Joe,” witha second instance of the second word, “Robert.” In this example, thetext, “Replace with ‘Robert’?”, included in the prompt 210 includes thesecond word, “Robert,” which will replace the first word 208. Theprompter 108 may also generate an indicator 212, such as a line, fromthe prompt 210 to the second instance of the first word 208, to furtheridentify the word to be replaced. The prompter 108 may also generate abutton 214, which the user may press and/or click to accept the proposedreplacement, deleting, “Joe,” and inserting, “Robert.”

FIG. 2D shows the UI 200 with copied text 252 according to anotherexample implementation. The copier 104 may have copied the copied text252 from another application, or from a previous document.

FIG. 2E shows the UI 200 with a first instance of a first string 254 inthe copied text 252 replaced according to an example implementation. Inthis example, the first string 254 is a first string of successivecharacters, “Excellent Product Manufacturing.” The user is replacing thefirst instance of the first string 254 with a second string 256 ofsuccessive characters, “Outstanding Goods Production.” After the userhas replaced the first instance of the first string 254 with the firstinstance of the second string 256, the copied text 252 still includes asecond instance of the first string 258, “Excellent ProductManufacturing.” If the user forgot to replace the second instance of thefirst string 258, sending the letter could result in embarrassmentand/or a reduced likelihood of receiving a job offer.

FIG. 2F shows the UI 200 with a prompt 260 to replace the secondinstance of the first string 258 in the copied text 252 according to anexample implementation. In this example, the prompter 108 may prompt theuser to replace the second instance of the first string 258 with asecond instance of the second string 256, such as by highlighting thesecond instance of the first string 258 (the highlighting is shown inFIG. 2F as boxes around the second instance of the first string 258).The prompter 108 may also generate a prompt 260, which may include text,“Replace with ‘Outstanding Goods Production’?”, including the secondstring 256, “Outstanding Goods Production,” which will replace the firststring 258. The prompter 108 may also generate an indicator 262, such asa line from the prompt 260 to the second instance to the first string258, to further identify the second instance of the first string 258 tobe replaced with a second instance of the second string. The prompter108 may also generate a button 264, which the user may press and/orclick on to accept the proposed change to replace the second instance ofthe first string 258 with a second instance of the second string.

FIG. 3A shows the UI 200 with copied text 302 according to anotherexample implementation. The copier 104 may have copied the copied text302 from another application, or from a previous document.

FIG. 3B shows the UI 200 with a proper name replaced with another propername of the opposite gender according to an example implementation. Inthis example, a first name 304, “Albert,” is replaced with a second name306, “Alice,” such as by removing and/or deleting the first name 304 andadding and/or inserting the second name 306 at the same location in thecopied text 302 from which the first name 304 was removed and/ordeleted. The change monitor 106 may monitor the change from “Albert” to“Alice,” and may query the noun determiner 112 to determine whether“Albert” and “Alice” are proper nouns, and whether “Alice” has anopposite gender from “Albert.” In this example, the noun determiner 112determines that the second name 306, “Alice,” is associated with thefemale gender, the opposite gender of the first name 304, “Albert,”which is associated with the male gender. The noun determiner 112 mayrespond to the change monitor 106 with an answer that the gender hasbeen changed from male to female.

Based on the answer and/or result that the gender of a proper noun hasbeen changed from male to female, the change monitor 106 and/or prompter108 may instruct the searcher 110 to search for any gendered pronouns,specifically any pronouns associated with the male gender. In thisexample, the copied text 302 includes a male pronoun 316, “He,” whichwas consistent with the gender associated with the first name 304, butis inconsistent with the gender associated with the second name 306which replaced the first name 304. The searcher 110 and/or noundeterminer 112 determine that the copied text 302 includes a genderedpronoun associated with the same gender as the replaced word and/orfirst name 304, “Albert.” Based on the searcher 110 and/or noundeterminer 112 determining that the copied text 302 including thegendered pronoun associated with the same gender as the replaced wordand/or first name 304, “Albert,” the prompter 108 may generate a promptto change the gendered pronoun to a gendered pronoun associated with theopposite gender.

FIG. 3C shows the UI 200 with a prompt 310 to replace the pronoun 316with another pronoun of the opposite gender according to an exampleimplementation. In this example, as described above, the prompter 108may have determined, and/or been called or prompted based on thedetermination that, the pronoun 316, “He,” is inconsistent with thesecond name 306, “Alice.” The prompter 108 may prompt the user toreplace the pronoun 316, “He,” with a pronoun of the opposite gender,“She.” The prompter 108 may highlight the pronoun 316 that the prompter108 proposes to replace (the highlighting is shown in FIG. 3C as a boxaround the pronoun 316). The prompter 108 may generate a prompt 310,which may include text, “Replace with ‘She’?”, with the pronoun of theopposite gender (“She”). The prompter 108 may include and/or generate anindicator 312, such as a line from the prompt 310 to the pronoun 316, tofurther identify the pronoun 316 to be replaced. The prompter 108 mayalso generate a button 314, which the user may press and/or click on toaccept the proposed replacement to delete the gendered pronoun 316 andinsert a corresponding pronoun associated with the opposite gender.

FIG. 4A shows the UI 200 with copied text 402 according to anotherexample implementation. In this example the copied text 402 is a jobapplication letter that identifies the company, “Widget Company,” atwhich “Calvin” is applying for a job. The copier 104 may have copied thecopied text 402 from another application, or from a previous document.

FIG. 4B shows the UI 200 with a change made to the copied text 402according to an example implementation. In this example, the user haschanged the name of the company and an expression of interest in thebusiness of the company by replacing, “Widget Company. I enjoy widgets,”with, “Toy Company. I enjoy toys.” The replacement may include removingand/or deleting an original sequence 403 and/or string of characters,“Widget Company. I enjoy widgets,” and adding and/or inserting a newsequence 404A and/or string of characters, “Toy Company. I enjoy toys,”at the location from which the original sequence 403 of characters wasremoved and/or deleted. The change monitor 106 may increment the changecounter 130 in response to the removal and/or deletion of the originalsequence 403.

FIG. 4C shows the UI 200 with the same change made to the copied text402 as in the example shown in FIG. 4B according to an exampleimplementation. In this example, the same change to the copied text 402may be the removal and/or deletion of the original sequence 403. Thecopier 104 may have copied the copied text 402 so that the user couldapply to another company, “Musical Instrument Company.”

In this example, the same change to the copied text 402 as was made inthe example shown in FIG. 4B, which may include deleting and/or removingthe original sequence 403, “Widget Company. I enjoy widgets.” The usermay replace the original sequence 403 with a new sequence 404B and/orstring of characters, “Musical Instrument Company. I enjoy musicalinstruments,” to apply to work for, and express his interest in thebusiness of, “Musical Instrument Company.” The change monitor 106 mayincrement the change counter 130 to reflect another (for example,second), same change to the copied text 402 as was shown and describedwith respect to FIG. 4B. This change may cause the value stored in thechange counter 130 to meet or exceed the change threshold 132.

FIG. 4D shows the UI 200 with a prompt 410 to make the same change tothe copied text 402 as in the examples shown in FIGS. 4B and 4C. In thisexample, the copier 104 may have again copied the copied text 402 forthe user to change for applying to work for another company. Theprompter 108 may anticipate the change to the copied text 402 byprompting, and/or generating a prompt for, based on the change counter130 meeting or exceeding the value stored in the change threshold 132,the user to delete, remove, and/or replace the original sequence 403and/or string of characters, “Widget Company. I enjoy widgets.”

The prompter 108 may cause the original sequence 403 to be highlighted,showing the user the text to be replaced, deleted, and/or removed (thehighlighting is shown in FIG. 4D as boxes around the text). The prompter108 may also generate a prompt 410 with text, such as, “Replacehighlighted text?” The prompter 108 may also generate a button 414. Theuser may click on the button 414, to which the prompter 108 may respondby removing and/or deleting the original sequence 403 and placing acursor at the location from which the original sequence 403 was removedand/or deleted, so that the user can easily add new text at the locationfrom which the original sequence 403 was removed and/or deleted.

FIG. 5A shows the UI 200 with copied text 502 according to an exampleimplementation. The copier 104 may have copied the copied text 502 fromanother application, or from a previous document. The copied text 502may include a portion of a letter, as well as a first name 504A, whichmay be the name or a person or the name of an institution, in thisexample, “College_A,” and a first address 504B. The first address 504Bmay be associated with the first name 504A, and in this example is,“Street_A; City_A, State_A Zip_A.”

FIG. 5B shows the UI 200 with the copied text 502 and a prompt 510 tochange the address 504B after a name has been changed according to anexample implementation. In this example, the user may have replaced thefirst name 504A with a second name 506, in this example, “College_B,”and the name determiner 114 may determine that the replaced portion ofthe copied text 502 was a name. Based on the name determiner determiningthat the replaced portion of the copied text 502 was a name, the addressdeterminer 118 may determine that the first address 504B is notassociated with the second name 506. Based on determining that the firstaddress 504B is not associated with the second name 506, the addressdeterminer 118 may determine a second address, “Street_B; City_B,State_B Zip_B,” associated with the second name 506.

Based on the determination that the first address 504B is not associatedwith the second name 506, the prompter 108 may cause the first address504B to be highlighted, to bring the incorrect address to the user'sattention (in FIG. 5B the highlighting is shown as a polygon around thefirst address 504B). The prompter 108 may also generate a prompt 510,which may include text inquiring whether the user wants to replace thefirst address 504B with the second address, the second address havingbeen determined by the address determiner 118. In this example, the textincluded in the prompt 510 is, “Replace with Street_B City_B, State_BZip_B?” The prompter 108 may generate a button 514, and may respond tothe user pressing and/or clicking the button 514 by replacing the firstaddress 504B with the second address.

FIG. 6A shows an email interface 600 with a recipient 604A and copiedtext 602 according to an example implementation. The email interface 600may have been generated by the UI generator 102, and may enable a userto generate and send an email to the recipient 604A. The email interface600 may include an email with an identification of the recipient 604A,such as an email address, and copied text 602. The computing system 100may send the email, including the copied text 602, to the recipient604A, in response to a send instruction from the user. The copied text602 may have been copied into the email interface 600 by the copier 104,and may include a name 606, “Matthew,” following a salutation 608,“Hello.” The name determiner 114 may determine that the name 606 isassociated with the email address, “matthew@domain.com,” of therecipient 604A. The location determiner 116 may determine that the name606 is on the first line of the copied text 602 and/or immediatelyfollows the salutation 608, “Hello.”

FIG. 6B shows the email interface 600 with a different recipient 604Bthan the example of FIG. 6A, and a prompt 610 to change the copied text602 based on the different recipient 604B according to an exampleimplementation. In this example, the copier 104 may have copied thecopied text 602 from the example shown in FIG. 6A or a previous instancein response to an instruction from the user, and the user may bere-using the copied text 602 to send birthday party invitations tomultiple recipients.

In this example, the copied text 602 may include the name 606, eventhough the user has entered a new recipient 604B for the email. The namedeterminer 114 may determine that a name associated with the emailaddress, “paul@domain.com,” of the new recipient 604B, is “Paul.” Theprompter 108 may determine that the name, Paul,” of the new recipient604B, is not the same as the name 606 included in the first line and/orimmediately following the salutation 608 in the copied text 602.

Based on the determination that the name, “Paul,” of the new recipient604B, is not the same as the name 606 included in the copied text 602,the prompter 108 may prompt the user to replace the name 606, “Matthew,”included in the copied text 602, with the name, “Paul,” associated withthe email address, “paul@domain.com,” of the new recipient 604B, such asby deleting and/or removing the name 606 and inserting and/or adding thename of the new recipient 604B in the location from which the name 606was deleted and/or removed. The prompter 108 may prompt the replacementby highlighting the name 606 (the highlighting is shown in FIG. 6B as abox around the name 606). The prompter 108 may also prompt thereplacement by generating a prompt 610. The prompt 610 may include textinquiring whether the user wishes to replace the name 606, and/or mayinclude the name of the new recipient 604B. In the example shown in FIG.6B, the prompt 610 includes the text, “Replace with ‘Paul’?” Theprompter 108 may also generate an indicator 612, such as a line from theprompt 610 to the name 606, strengthening the association between theprompt 610 and the name 606 to be replaced. The prompter 108 may alsogenerate a button 614. The prompter 108 may respond to the user pressingand/or clicking the button 614 by replacing the first name, “Matthew,”with the second name, “Paul,” in the first line of the copied text 602and/or immediately following the salutation 608 within the copied text602.

In an example implementation, the prompter 108 may determine whether thename 606 corresponds to the name associated with the recipient 604B inresponse to the computing system 100 receiving a send instruction fromthe user. In response to receiving the send instruction, the prompter108 may determine the name associated with the recipient 604B, and thename 606 included in the text (whether the text was copied or typedwithout copying), which may be in a first line of the text and/orimmediately following a salutation 608. If the name associated with therecipient 604B is not the same as the name 606 included in the text,then the prompter 108 may prompt the change to replace the name 606 witha name that is the same as the name associated with the recipient 604B.

FIG. 7 is a flowchart of a method 700 for propagating changes to copiedtext according to an example implementation. The method 700 may includepresenting copied text within a user interface of a computing system(702). The method 700 may also include monitoring the user interface forchanges to the copied text (704). The method 700 may also includereceiving a change to the copied text, the change including replacing afirst instance of a first word, within the copied text, with a firstinstance of a second word (706). The method 700 may also include, inresponse to receiving the change to the copied text, presenting a promptto replace, within the copied text, a second instance of the first wordwith a second instance of the second word (708).

According to an example implementation, the presenting the copied text(702) may be performed in response to receiving an instruction to copythe text within the user interface.

According to an example implementation, the user interface may include aword processing application.

According to an example implementation, the user interface may bepresented within a display.

According to an example implementation, the monitoring the userinterface (704) may include constantly monitoring the user interface forchanges to the copied text.

According to an example implementation, the first word may include afirst string of successive characters and the second word may include asecond string of successive characters.

According to an example implementation, the presenting the prompt (708)may include highlighting the second instance of the first word.

According to an example implementation, the presenting the prompt (708)may include displaying text querying whether a user wants to replace thesecond instance of the first word with the second instance of the secondword, and displaying a button for the user to click on to replace thesecond instance of the first word with the second instance of the secondword.

According to an example implementation, the method 700 may furtherinclude searching for and finding the second instance of the first wordin response to receiving the change to the copied text.

According to an example implementation, the method 700 may furtherinclude determining that the first word is a proper noun and the secondword is a proper noun, and the presenting the prompt (708) may includepresenting the prompt to replace the second instance of the first wordwith the second instance of the second word based on the determiningthat the first word is a proper noun and the second word is a propernoun.

According to an example implementation, the method 700 may furtherinclude determining that the first word is a first name of a person andthe second word is a second name of a person, the second name having anopposite gender from the first name, and presenting a second prompt toreplace, within the copied text, a first gendered pronoun with a secondgendered pronoun, the second gendered pronoun having the opposite genderfrom the first gendered pronoun.

FIG. 8 is a flowchart of a method 800 for propagating changes to copiedtext according to another example implementation. The method 800 mayinclude monitoring changes to multiple instances of copied text (802).The method 800 may also include determining that a same change has beenmade to the copied text at least a threshold number of times, thethreshold number being greater than one (804). The method 800 may alsoinclude prompting the same change to be made to a subsequent instance ofthe copied text based on the determination that the same change has beenmade to the copied text at least the threshold number of times (806).

According to an example implementation, the method 800 may furtherinclude incrementing a change counter each time the same change is madeto an instance of the copied text. In this example, the determining thatthe same change has been made to the copied text at least the thresholdnumber of times (804) may include comparing the change counter to thethreshold number.

According to an example implementation, the copied text may be presentedin a user interface of a computing system, the same change may be madein the user interface at least the threshold number of times, and theprompt may be presented in the user interface.

According to an example implementation, the multiple instances of copiedtext may be presented in a word processing application.

According to an example implementation, the multiple instances of copiedtext may be presented in an email interface.

According to an example implementation, the same change to the multipleinstances of copied text may include removing an original sequence ofcharacters from the copied text, and the prompting the same change to bemade to the subsequent instance of the copied text may includehighlighting, in the subsequent instance of the copied text, theoriginal sequence of characters.

FIG. 9 is a flowchart of a method 900 for correcting errors in copiedtext according to an example implementation. The method 900 may includereceiving copied text, the copied text including a first name and afirst address, the first address immediately following the first name(902). The method 900 may include receiving a replacement of the firstname with a second name (904). The method 900 may include determiningthat the second name does not correspond to the first address (906). Themethod 900 may include, based on determining that the second name doesnot correspond to the first address, determining a second addresscorresponding to the second name (908). The method 900 may includepresenting a prompt to replace the first address with the determinedsecond address (910).

According to an example implementation, the determining that the secondname does not correspond to the first address, and the determining thesecond address corresponding to the second name, may include performingan Internet search on the second name.

FIG. 10 is a flowchart of a method 1000 for correcting errors in copiedtext according to another example implementation. The method 1000 mayinclude receiving, within an email interface presented by a computingsystem, an identification of a recipient, and copied text (1002). Themethod 1000 may include determining a name associated with the recipient(1004). The method 1000 may include determining that a name of a personin the copied text is different than the name associated with therecipient (1006). The method 1000 may include presenting a prompt tochange the name of the person in the copied text to the name associatedwith the recipient (1008).

According to an example implementation, the determining that the name ofthe person in the copied text is different than the name associated withthe recipient (1006) may include determining that a name of a person ina first line of the copied text is different from the name associatedwith the recipient.

According to an example implementation, the determining that the name ofthe person in the copied text is different than the name associated withthe recipient (1006) may include determining that a name of a personimmediately following a salutation in the copied text is different thanthe name associated with the recipient.

According to an example implementation, the determining that the name ofthe person in the copied text is different than the name associated withthe recipient (1006) may be performed in response to a send instruction.

FIG. 11 shows an example of a generic computer device 1100 and a genericmobile computer device 1150, which may be used with the techniquesdescribed here. Computing device 1100 is intended to represent variousforms of digital computers, such as laptops, desktops, workstations,personal digital assistants, servers, blade servers, mainframes, andother appropriate computers. Computing device 1150 is intended torepresent various forms of mobile devices, such as personal digitalassistants, cellular telephones, smart phones, and other similarcomputing devices. The components shown here, their connections andrelationships, and their functions, are meant to be exemplary only, andare not meant to limit implementations of the inventions describedand/or claimed in this document.

Computing device 1100 includes a processor 1102, memory 1104, a storagedevice 1106, a high-speed interface 1108 connecting to memory 1104 andhigh-speed expansion ports 1110, and a low speed interface 1112connecting to low speed bus 1114 and storage device 1106. Each of thecomponents 1102, 1104, 1106, 1108, 1110, and 1112, are interconnectedusing various busses, and may be mounted on a common motherboard or inother manners as appropriate. The processor 1102 can processinstructions for execution within the computing device 1100, includinginstructions stored in the memory 1104 or on the storage device 1106 todisplay graphical information for a GUI on an external input/outputdevice, such as display 1116 coupled to high speed interface 1108. Inother implementations, multiple processors and/or multiple buses may beused, as appropriate, along with multiple memories and types of memory.Also, multiple computing devices 1100 may be connected, with each deviceproviding portions of the necessary operations (e.g., as a server bank,a group of blade servers, or a multi-processor system).

The memory 1104 stores information within the computing device 1100. Inone implementation, the memory 1104 is a volatile memory unit or units.In another implementation, the memory 1104 is a non-volatile memory unitor units. The memory 1104 may also be another form of computer-readablemedium, such as a magnetic or optical disk.

The storage device 1106 is capable of providing mass storage for thecomputing device 1100. In one implementation, the storage device 1106may be or contain a computer-readable medium, such as a floppy diskdevice, a hard disk device, an optical disk device, or a tape device, aflash memory or other similar solid state memory device, or an array ofdevices, including devices in a storage area network or otherconfigurations. A computer program product can be tangibly embodied inan information carrier. The computer program product may also containinstructions that, when executed, perform one or more methods, such asthose described above. The information carrier is a computer- ormachine-readable medium, such as the memory 1104, the storage device1106, or memory on processor 1102.

The high speed controller 1108 manages bandwidth-intensive operationsfor the computing device 1100, while the low speed controller 1112manages lower bandwidth-intensive operations. Such allocation offunctions is exemplary only. In one implementation, the high-speedcontroller 1108 is coupled to memory 1104, display 1116 (e.g., through agraphics processor or accelerator), and to high-speed expansion ports1110, which may accept various expansion cards (not shown). In theimplementation, low-speed controller 1112 is coupled to storage device1106 and low-speed expansion port 1114. The low-speed expansion port,which may include various communication ports (e.g., USB, Bluetooth,Ethernet, wireless Ethernet) may be coupled to one or more input/outputdevices, such as a keyboard, a pointing device, a scanner, or anetworking device such as a switch or router, e.g., through a networkadapter.

The computing device 1100 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 1120, or multiple times in a group of such servers. Itmay also be implemented as part of a rack server system 1124. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 1122. Alternatively, components from computing device 1100 maybe combined with other components in a mobile device (not shown), suchas device 1150. Each of such devices may contain one or more ofcomputing device 1100, 1150, and an entire system may be made up ofmultiple computing devices 1100, 1150 communicating with each other.

Computing device 1150 includes a processor 1152, memory 1164, aninput/output device such as a display 1154, a communication interface1166, and a transceiver 1168, among other components. The device 1150may also be provided with a storage device, such as a microdrive orother device, to provide additional storage. Each of the components1150, 1152, 1164, 1154, 1166, and 1168, are interconnected using variousbuses, and several of the components may be mounted on a commonmotherboard or in other manners as appropriate.

The processor 1152 can execute instructions within the computing device1150, including instructions stored in the memory 1164. The processormay be implemented as a chipset of chips that include separate andmultiple analog and digital processors. The processor may provide, forexample, for coordination of the other components of the device 1150,such as control of user interfaces, applications run by device 1150, andwireless communication by device 1150.

Processor 1152 may communicate with a user through control interface1158 and display interface 1156 coupled to a display 1154. The display1154 may be, for example, a TFT LCD (Thin-Film-Transistor Liquid CrystalDisplay) or an OLED (Organic Light Emitting Diode) display, or otherappropriate display technology. The display interface 1156 may compriseappropriate circuitry for driving the display 1154 to present graphicaland other information to a user. The control interface 1158 may receivecommands from a user and convert them for submission to the processor1152. In addition, an external interface 1162 may be provide incommunication with processor 1152, so as to enable near areacommunication of device 1150 with other devices. External interface 1162may provide, for example, for wired communication in someimplementations, or for wireless communication in other implementations,and multiple interfaces may also be used.

The memory 1164 stores information within the computing device 1150. Thememory 1164 can be implemented as one or more of a computer-readablemedium or media, a volatile memory unit or units, or a non-volatilememory unit or units. Expansion memory 1174 may also be provided andconnected to device 1150 through expansion interface 1172, which mayinclude, for example, a SIMM (Single In Line Memory Module) cardinterface. Such expansion memory 1174 may provide extra storage spacefor device 1150, or may also store applications or other information fordevice 1150. Specifically, expansion memory 1174 may includeinstructions to carry out or supplement the processes described above,and may include secure information also. Thus, for example, expansionmemory 1174 may be provide as a security module for device 1150, and maybe programmed with instructions that permit secure use of device 1150.In addition, secure applications may be provided via the SIMM cards,along with additional information, such as placing identifyinginformation on the SIMM card in a non-hackable manner.

The memory may include, for example, flash memory and/or NVRAM memory,as discussed below. In one implementation, a computer program product istangibly embodied in an information carrier. The computer programproduct contains instructions that, when executed, perform one or moremethods, such as those described above. The information carrier is acomputer- or machine-readable medium, such as the memory 1164, expansionmemory 1174, or memory on processor 1152, that may be received, forexample, over transceiver 1168 or external interface 1162.

Device 1150 may communicate wirelessly through communication interface1166, which may include digital signal processing circuitry wherenecessary. Communication interface 1166 may provide for communicationsunder various modes or protocols, such as GSM voice calls, SMS, EMS, orMMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others.Such communication may occur, for example, through radio-frequencytransceiver 1168. In addition, short-range communication may occur, suchas using a Bluetooth, WiFi, or other such transceiver (not shown). Inaddition, GPS (Global Positioning System) receiver module 1170 mayprovide additional navigation- and location-related wireless data todevice 1150, which may be used as appropriate by applications running ondevice 1150.

Device 1150 may also communicate audibly using audio codec 1160, whichmay receive spoken information from a user and convert it to usabledigital information. Audio codec 1160 may likewise generate audiblesound for a user, such as through a speaker, e.g., in a handset ofdevice 1150. Such sound may include sound from voice telephone calls,may include recorded sound (e.g., voice messages, music files, etc.) andmay also include sound generated by applications operating on device1150.

The computing device 1150 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as acellular telephone 1180. It may also be implemented as part of a smartphone 1182, personal digital assistant, or other similar mobile device.

Implementations of the various techniques described herein may beimplemented in digital electronic circuitry, or in computer hardware,firmware, software, or in combinations of them. Implementations mayimplemented as a computer program product, i.e., a computer programtangibly embodied in an information carrier, e.g., in a machine-readablestorage device, for execution by, or to control the operation of, dataprocessing apparatus, e.g., a programmable processor, a computer, ormultiple computers. A computer program, such as the computer program(s)described above, can be written in any form of programming language,including compiled or interpreted languages, and can be deployed in anyform, including as a stand-alone program or as a module, component,subroutine, or other unit suitable for use in a computing environment. Acomputer program can be deployed to be executed on one computer or onmultiple computers at one site or distributed across multiple sites andinterconnected by a communication network.

Method steps may be performed by one or more programmable processorsexecuting a computer program to perform functions by operating on inputdata and generating output. Method steps also may be performed by, andan apparatus may be implemented as, special purpose logic circuitry,e.g., an FPGA (field programmable gate array) or an ASIC(application-specific integrated circuit).

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read-only memory ora random access memory or both. Elements of a computer may include atleast one processor for executing instructions and one or more memorydevices for storing instructions and data. Generally, a computer alsomay include, or be operatively coupled to receive data from or transferdata to, or both, one or more mass storage devices for storing data,e.g., magnetic, magneto-optical disks, or optical disks. Informationcarriers suitable for embodying computer program instructions and datainclude all forms of non-volatile memory, including by way of examplesemiconductor memory devices, e.g., EPROM, EEPROM, and flash memorydevices; magnetic disks, e.g., internal hard disks or removable disks;magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor andthe memory may be supplemented by, or incorporated in special purposelogic circuitry.

To provide for interaction with a user, implementations may beimplemented on a computer having a display device, e.g., a cathode raytube (CRT) or liquid crystal display (LCD) monitor, for displayinginformation to the user and a keyboard and a pointing device, e.g., amouse or a trackball, by which the user can provide input to thecomputer. Other kinds of devices can be used to provide for interactionwith a user as well; for example, feedback provided to the user can beany form of sensory feedback, e.g., visual feedback, auditory feedback,or tactile feedback; and input from the user can be received in anyform, including acoustic, speech, or tactile input.

Implementations may be implemented in a computing system that includes aback-end component, e.g., as a data server, or that includes amiddleware component, e.g., an application server, or that includes afront-end component, e.g., a client computer having a graphical userinterface or a Web browser through which a user can interact with animplementation, or any combination of such back-end, middleware, orfront-end components. Components may be interconnected by any form ormedium of digital data communication, e.g., a communication network.Examples of communication networks include a local area network (LAN)and a wide area network (WAN), e.g., the Internet.

While certain features of the described implementations have beenillustrated as described herein, many modifications, substitutions,changes and equivalents will now occur to those skilled in the art. Itis, therefore, to be understood that the appended claims are intended tocover all such modifications and changes as fall within the true spiritof the embodiments of the invention.

What is claimed is:
 1. A non-transitory computer-readable storage mediumcomprising instructions stored thereon for correcting errors in copiedtext that, when executed by at least one processor, are configured tocause a computing system to at least: receive, within an email interfacepresented by the computing system, an identification of a recipient, andcopied text; determine a name associated with the recipient; determinethat a name of a person in the copied text is different than the nameassociated with the recipient; and present a prompt to change the nameof the person in the copied text to the name associated with therecipient.
 2. The non-transitory computer-readable storage medium ofclaim 1, wherein the determining that the name of the person in thecopied text is different than the name associated with the recipientincludes determining that a name of a person in a first line of thecopied text is different from the name associated with the recipient. 3.The non-transitory computer-readable storage medium of claim 1, whereinthe determining that the name of the person in the copied text isdifferent than the name associated with the recipient includesdetermining that a name of a person immediately following a salutationin the copied text is different than the name associated with therecipient.
 4. The non-transitory computer-readable storage medium ofclaim 1, wherein the determining that the name of the person in thecopied text is different than the name associated with the recipient isperformed in response to a send instruction.
 5. A method performed by acomputing system, the method comprising: receiving, within an emailinterface presented by the computing system, an identification of arecipient, and copied text; determining a name associated with therecipient; determining that a name of a person in the copied text isdifferent than the name associated with the recipient; and presenting aprompt to change the name of the person in the copied text to the nameassociated with the recipient.
 6. The method of claim 5, wherein thedetermining that the name of the person in the copied text is differentthan the name associated with the recipient includes determining that aname of a person in a first line of the copied text is different fromthe name associated with the recipient.
 7. The method of claim 5,wherein the determining that the name of the person in the copied textis different than the name associated with the recipient includesdetermining that a name of a person immediately following a salutationin the copied text is different than the name associated with therecipient.
 8. The method of claim 5, wherein the determining that thename of the person in the copied text is different than the nameassociated with the recipient is performed in response to a sendinstruction.
 9. A computing system comprising: at least one processor;and a non-transitory computer-readable storage medium comprisinginstructions stored thereon for correcting errors in copied text that,when executed by the at least one processor, are configured to cause thecomputing system to at least: receive, within an email interfacepresented by the computing system, an identification of a recipient, andcopied text; determine a name associated with the recipient; determinethat a name of a person in the copied text is different than the nameassociated with the recipient; and present a prompt to change the nameof the person in the copied text to the name associated with therecipient.
 10. The computing system of claim 9, wherein the determiningthat the name of the person in the copied text is different than thename associated with the recipient includes determining that a name of aperson in a first line of the copied text is different from the nameassociated with the recipient.
 11. The computing system of claim 9,wherein the determining that the name of the person in the copied textis different than the name associated with the recipient includesdetermining that a name of a person immediately following a salutationin the copied text is different than the name associated with therecipient.
 12. The computing system of claim 9, wherein the determiningthat the name of the person in the copied text is different than thename associated with the recipient is performed in response to a sendinstruction.